package src.utils;

import org.apache.commons.lang.StringUtils;
import src.utils.resource.ResourcesUtils;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class FileOpertion {

    /**
     * 获取文件或目录下所有的文件，文件后缀必须为txt
     *
     * @return 查询到的文件列表
     * @filePath 文件名或目录
     */
    public static List<File> getFileList(String filePath) {
        String key = "txt"; //过滤文件名关键字
        List<File> fileList = new ArrayList<File>();
        File file = new File(filePath);
//        处理目录情况
        if (file.isDirectory()) {
            File[] subFiles = file.listFiles();
            for (File subFile : subFiles) {
//                子文件如果是目录进行递归
                if (subFile.isDirectory()) {
                    getFileList(subFile.getAbsolutePath());
                } else {
//                    子文件如果是文件，通过后缀名进行过滤
                    if (subFile.getName().endsWith(key)) {
                        System.out.println(subFile.getAbsolutePath());
                        fileList.add(subFile);
                    } else {
                        continue;
                    }
                }
            }
        } else {
            // 处理单个文件情况
            if (file.getName().endsWith(key)) {
                System.out.println(file.getAbsolutePath());
                fileList.add(file);
            }
        }
        return fileList;
    }


    /**
     * 读取文件内容，获取put语句
     *
     * @param file 脚本文件
     * @return put语句list
     */
    public static List<String> getPutList(File file) {
        //字符流
        FileReader fr = null;
        //缓冲流
        BufferedReader br = null;
        List<String> putList = new ArrayList<String>();
        try {
            fr = new FileReader(file);
            br = new BufferedReader(fr);   //扩容，类似加水管

            String line = br.readLine();    //逐行复制
            while (line != null) {
                line = line.trim();
                if (line.startsWith("put")) {
                    System.out.println(line);
                    putList.add(line);
                }

                line = br.readLine();
            }
            System.out.println("文件读取成功！");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //关闭流，顺序与打开相反
                br.close();
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return putList;
    }
}
